﻿using Internal.Runtime.Services.Battle.Behaviour;
using Runtime.Services.Battle.Behaviour;

namespace Runtime.Services.Battle.Behaviour {

    /// <summary>
    /// 行为信息
    /// </summary>
    public interface IDFR_BattleBehaviourInfo {

        /// <summary>
        /// 行为类型
        /// </summary>
        DFR_BattleBehaviourType Type { get; }
    }

    public class DFR_BattleBehaviourInfo : IDFR_BattleBehaviourInfo, IDFR_BattleBehaviourInfoInternal {

        public DFR_BattleBehaviourType Type { get; init; }

        int IDFR_BattleBehaviourInfoInternal.FrameIndex { get; set; }
    }

    public class DFR_BattleBehaviourInfo<TParameter> : DFR_BattleBehaviourInfo {

        public TParameter Parameter { get; init; }
    }
}

namespace Internal.Runtime.Services.Battle.Behaviour {

    public interface IDFR_BattleBehaviourInfoInternal : IDFR_BattleBehaviourInfo {

        int FrameIndex { get; set; }
    }
}
